#if !defined(EA_18A03902_DB6E_4caf_80D7_8DD5BEE317C9__INCLUDED_)
#define EA_18A03902_DB6E_4caf_80D7_8DD5BEE317C9__INCLUDED_

#include "Client.h"
#include "Item.h"
#include "Date.h"

class Bid
{
public:
	Bid() : value(0.0) {}
	Bid(Client _bidder, Date _date, Item _item, double _value): bidder(_bidder), date(_date), item(_item), value(_value) {}
	virtual ~Bid() {}

	/** @return the bidder */
	Client getBidder() const { return bidder; }

	/** @return the bid date */
	Date getDate() const { return date; }

	/** @return the item that was bidded on */
	Item getItem() const { return item; }

	/** @return the bid value */
	double getValue() const { return value; }
	
	/** Sets bidder equal to c */
	void setBidder(Client c) { bidder = c; }

	/** Sets date equal to d */
	void setDate(Date d) { date = d; }

	/** Sets item equal to i */
	void setItem(Item i) { item = i; }

	/** Sets value equal to b */
	void setValue(double b) { value = b; }

	/** Shows the information about the bid */
	void showBid();

	/**
	 * operator = overload to equal the bid object with b
	 */
	void operator= (Bid b);
	
	/**
	 * operator == overload to compare the bid's item with b's item
	 */
	bool operator==(Bid b) { return (this->item == b.getItem() && this->value == b.getValue()); }

private:
	Client bidder;
	Date date;
	Item item;
	double value;

};
#endif // !defined(EA_18A03902_DB6E_4caf_80D7_8DD5BEE317C9__INCLUDED_)

